﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using pwblog.Entities;
using pwblog.DataAccess;
using System.Web.UI.WebControls;

namespace pwblog.BusinessObject
{
    public class CategoryBo
    {
        private CategoryDao categoryDao;

        /// <summary>
        /// hàm khởi tạo 
        /// </summary>
        public CategoryBo()
        {
            categoryDao = new CategoryDao();
        }

        /// <summary>
        /// Lấy các thông tin của Category sau đó chuyển sang dạng ListItem
        /// </summary>
        /// <returns>danh sách ListItem</returns>
        public ListItem[] GetListItemCategories()
        {
            CategoryDao categoryDao = new CategoryDao();
            var categories = categoryDao.GetCategories();
            List<ListItem> items = new List<ListItem>();

            foreach (Category item in categories)
            {
                items.Add(new ListItem(item.Name, item.Id.ToString()));
            }

            items.Sort(delegate(ListItem item1, ListItem item2) { return item1.Text.CompareTo(item2.Text); });

            return items.ToArray();
        }

        /// <summary>
        /// Lấy tất cả thông tin Category
        /// </summary>
        /// <returns></returns>
        public Category[] GetCategories()
        {
            try
            {
                return categoryDao.GetCategories();
            }
            catch
            {
                return null;
            }
        }

        /// <summary>
        /// Thêm một Category mới
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        internal bool InsertCategory(string name)
        {
            try
            {
                categoryDao.InsertCategory(new Category() { 
                    Name = name
                });
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// Xóa một Category theo id
        /// </summary>
        /// <param name="idCategory"></param>
        /// <returns></returns>
        internal bool DeleteCategory(int idCategory)
        {
            try
            {
                Category category = categoryDao.GetCategoryById(idCategory);
                categoryDao.DeleteCategory(category);
                return true;
            }
            catch
            {
                return false;
            }
        }

        /// <summary>
        /// Cập nhật Category
        /// </summary>
        /// <param name="id">id bài viết</param>
        /// <param name="name">tên bài viết</param>
        /// <returns>true/false</returns>
        internal bool UpdateCategory(int id, string name)
        {
            try
            {
                categoryDao.UpdateCategory(new Category() { 
                    Id = id,
                    Name = name
                });
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}